/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 通配符使用;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @Description 通配符使用
 *          ?
 * @Author 俊昭
 * @Date 2022/4/22
 */
public class aTest {
    @Test
    public void test(){
        List<Object> l1 = Arrays.asList(12,34);
        List<String> l2 = Arrays.asList("321","123");

        List<?> list = null;// 现在是 ? 是 Obj、Str的通用父类

        list = l1;
        print(list);
        list = l2;
        print(list);
        // 12 34
        // 321 123

        List<String> l  = new ArrayList();
        l.add("AA");
        l.add("AB");
        l.add("BB");

        list = l;
        // add 使用通配符就不可以添加数据了（除了null）
//        list.add("DD");
//        list.add('DD'); 都不可以
        list.add(null);// UnsupportedOperationException
//        print(list);

        System.out.println(list.get(0));// AA
        System.out.println(list.get(3));// null


    }
    public  static void print(List<?> list){
        for (Object o : list) {
            System.out.print(o + " ");
        }
        System.out.println();
    }
}
